Soru & Cevap

Android mysql veri çekme

17.04.2016 - 03:30

Merhaba sayın arkadaşlar,

sorularıma açıklık getirirseniz çok sevinirim.

 projemde HttpUrlConnection ile php den mysql e bağlanarak login işlemini yaptım.

Şuan öğrencinin derslerini göstermeye çalışmaktayım.

Nasıl bi yol izlemeliyim, hangi bağlantı türünü kullanmalıyım, araştırıyorum araştırıyorum falan bulamıyorum bişey. Android için kitap almaya karar verdim, yarın kitap araştırması yapacağım bu konular için, kitap tavsiyeniz varsa sevinirm.

 

Şuanki en büyük sıkıntım json ile veritabanındaki bilgileri çekebilmek, ve ekrana yansıtmak.

Yönlendirilmeye ihtiyacım var, teşekkür ederim..

698 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-57989-1451678910.jpg
serdarşen
19.04.2016 - 10:19

Merhaba Ahmet, HttpClient veya HttpUrlConnection  kullanmana gerek yok bunun için https desteği de veren Volley kütüphanesi var. Bu kütüphaneyle json verileri alıp gönderebilirsin (POST, GET). Örneğin aşağıdaki örnekte ben vertabanından verileri bir php script ile çekip json' a dönüştürüyorum. Sonra gelen veriyi MyFactory sınıfımda parse ediyorum.

Volley: https://gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-301/verileri-volley-ile-transfer-etmek

kullanici_giris.php

<?php
    header('Content-type:application/json;charset=utf-8'); //php Türkçe karakter için
    /*
    */
    include 'conn.php';

    //veritabanına bağlanır.
    $con= mysqli_connect($host, $user, $pass, $db);

    //android'ten gelen veriyi alır.
    $json = file_get_contents('php://input');
    $obj = json_decode($json);

    //veriyi ayıklar.
    $f_kul_adi = $obj->{'kul_adi'};
    $f_kul_sifre = $obj->{'kul_sifre'};

    //sql sorgumuz
    $sql = "
    SELECT * FROM kullanicilar 
    WHERE kul_adi='$f_kul_adi' AND kul_sifre='$f_kul_sifre';
    ";

    //gerekli değişkenler
    $data = array();
    $kul_id;
    $kul_adi;
    $kul_sifre;
    $state;
    $error;

    if(mysqli_connect_errno()){//bağlantı hatalıysa

        $state = "mysqli_connect_error";
        $error = mysqli_connect_error();

    }else{//bağlantı başarılıysa

        mysqli_set_charset($con,"utf8");

        if($result = mysqli_query($con, $sql)){ //sorgu başarılıysa

            if(mysqli_num_rows($result) > 0){ //sorgu sonucunda bir kayıt döndüyse

                $row = mysqli_fetch_array($result);
                $state = "login_successful";
                $error = mysqli_error($con);
                $kul_id = $row[0];
                $kul_adi = $row[1];
                $kul_sifre = $row[2];

            }else if(mysqli_num_rows($result) == 0){ //sorgu sonucunda bir kayıt dönmediyse

                $state = "login_failed";
                $error = mysqli_error($con);

            }

        }else{ //sorgu başarısızsa

            $state = "mysqli_error";
            $error = mysqli_error($con);
            
        }	
    }

    array_push($data, array("error"=>$error, "state"=>$state, "kul_id"=>$kul_id, "kul_adi"=>$kul_adi, "kul_sifre"=>$kul_sifre));
    echo json_encode(array("data"=>$data), JSON_UNESCAPED_UNICODE);

    mysqli_close($con);
?>

 

{
	"data": [{
		"kul_id": "1",
		"kul_adi": "Serdar",
		"kul_sifre": "12345",
		"state": "login_successful",
		"error": ""
	}]
}

 

VolleyResponseUretenSınıf.java 

    //kullanıcı sisteme giriş.
    public static void responseUserGiris(final Context context, String... params) {

        //gerekli değişkenler
        RequestQueue requestQueue;
        requestQueue = Volley.newRequestQueue(context);

        ////servera içerik gönderilecekse///////////////////////////////
        Map<String, String> contentParams = new HashMap<>();

        contentParams.put(Tables.oyun_kullanicilar.kul_adi, params[0]);
        contentParams.put(Tables.oyun_kullanicilar.kul_sifre, params[1]);

        JSONObject content = new JSONObject(contentParams);
        ///////////////////////////////////////////////////////////////

        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(

                Request.Method.POST,
                Url.kullanici_giris, content,

                new ResponseListener(){

                    @Override
                    public void onResponse(JSONObject response) {

                        Log.i(TAG, "onResponse");
                        MyFactory.buildUserGiris(response);

                    }

                },

                new ResponseErrorListener()

        );

        requestQueue.add(jsonObjectRequest);

    }

 

MyFactory.java

    //kullanıcı sisteme giriş.
    public static void buildUserGiris(JSONObject response) {
        if (response.length() > 0) {

            int count = 0;

            try {

                JSONArray dataArray = response.getJSONArray(Tables.data);

                while (count < dataArray.length()) {

                    JSONObject JO = dataArray.getJSONObject(count);

                    String state = JO.getString(Php.state);
                    String error = JO.getString(Php.error);


                    if (state.equals(Php.login_successful)) {

                        User user = MainActivity.user;
                        user.setKul_id(JO.getString(Tables.oyun_kullanicilar.kul_id));
                        user.setKul_adi(JO.getString(Tables.oyun_kullanicilar.kul_adi));
                        user.setKul_sifre(JO.getString(Tables.oyun_kullanicilar.kul_sifre));

                        Log.i(TAG, state);
                        MainActivity.preferences.kulAdiSifreKaydet(user.getKul_id(), user.getKul_adi(), user.getKul_sifre());
                        MainActivity.pm.initEntryPages();

                    }

                    if (state.equals(Php.mysqli_connect_error)) {

                        Log.i(TAG, state + ": " + error);

                    } else if (state.equals(Php.mysqli_error)) {

                        Log.i(TAG, state + ": " + error);

                    } else if (state.equals(Php.login_failed)) {

                        Log.i(TAG, state);
                        MainActivity.pm.speak("kullanıcı adı veya şifreniz hataalı.", "ID_login_failed");

                    }

                    count++;
                }


            } catch (JSONException e) {
                e.printStackTrace();
            }


        }
    }

 

Serdar Şen
24.04.2016 - 08:51
Ahmet bu, verileri nerede sıraladığına bağlı biraz. Örneğin listview'de sıralarsan liste item tıklama listener metodunun içine position değerine göre tıklayan nesneyi gönderirsin. sonra o nesnenin getIsım veya getId gibi bir getter'ı ile istediğin değereni alır kullanırsın. Yani model olarak çalışınca işimiz kolaşlaşıyor.
Ahmet
22.04.2016 - 03:32
hocam peki, mysql den çekilen verileri sıraladığımızda, bunlardan herhangi birine tıkaldığımızda bir işlem yapılsın istiyorum. bunu nasıl yaparız?
Profile picture for user ardakazanc
ardakazanc
17.04.2016 - 06:37

Umarım yararı olur.

 

https://mobilekran.wordpress.com/2012/02/28/android-mysql-database-connection/

 

http://www.tutorialspoint.com/android/android_php_mysql.htm

 

http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql

 

 

Ahmet
18.04.2016 - 11:15
yorum için sağolun fakat 3 örnekte org.apache.http kütüphanesine göre anlatılmış, bunlara göz atmıştım biraz :)